import { ElMessage, roleTypes } from 'element-plus'
import axios from "axios";
import pinia from '../stores/index';
import { useUserInfoStore } from '../stores/userInfo';
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import router from "../router/index.js"; // 这边进行路由的导入
// `http://121.41.171.56:8080`
const service = axios.create({
    baseURL: `http://121.41.171.56:8080`,
    timeout: 30000  // 后台接口超时时间设置
})

// request 拦截器
// 可以自请求发送前对请求做一些处理
service.interceptors.request.use(
    (config) => {
    NProgress.start()//开启进度条
    // 如果有token, 通过请求头携带给后台
    const userInfoStore = useUserInfoStore(pinia) // 如果不是在组件中调用,必须传入pinia
    const token = userInfoStore.token


    const user=userInfoStore.user//在登入时，没有user所以要进行判断
    if(user){
      (config.headers)['role']=user.role
    }
   
       if (token) {
        // config.headers['token'] = token  // 报错: headers对象并没有声明有token, 不能随便添加
        (config.headers)['token'] = token
    
      }
    return config;
  }
  );

// response 拦截器
// 可以在接口响应后统一处理结果  
service.interceptors.response.use(
    (response) => {
    NProgress.done()//关闭进度条
      if(response.data.code != 200){
      // 判断响应状态码
        if(response.data.code==500){
            router.push("/login")
            return  Promise.reject(ElMessage.error("登录已过期"))
        }else if (response.data.code == 501)  return  Promise.reject(ElMessage.error("用户名有误"))
        else if (response.data.code == 503) return  Promise.reject(ElMessage.error("密码有误"))
        else if (response.data.code == 505) return  Promise.reject(ElMessage.error("用户名占用"))
        else if (response.data.code == 504) return  Promise.reject(ElMessage.error("邮箱已占用"))
        else if (response.data.code == -1) return  Promise.reject(ElMessage.error(response.data.message))
    }else {
 
        return response.data; /* 返回成功响应数据中的data属性数据 */
      }
       
    },
    (error) => {
    NProgress.done()//关闭进度条
      return Promise.reject(error.message);
    }
  );

export default service
